#include<bits/stdc++.h>
#include "user_manager.h"
#include "password.h"
using namespace std;
/*
 * 展示全部基础用户信息
 * 参数：无
*/
void user_manager::ShowUserInfo(){
    node_usr.display();
}

/*
 * 录入新基础用户信息
 * 参数：base_user 类；
 * 功能：无返回值；
 *       展示并录入指定用户信息
*/
void user_manager::InsertUserInfo(base_user *reader){
    //先在用户哈希表内查找是否已经注册
    int key = get_hash(getMD5(reader->password));
    int val = user_password_id.get(key);
    if(val == -1) {//此用户不存在
        User_Register(key, ++total_users); //插入哈希表中
        reader->user_ID=total_users;
        cout << "姓名：" << reader->user_name;
        cout << "院系：" << reader->user_dep;
        node_usr.insert(reader); //插入 splay 树
    }
    else {
        cout << "此用户已存在！" << endl;
        return;
    }
}

/*
 * 根据密码查询读者信息
 * 参数：string 型，需要被查询的用户的密码
 * 功能：无返回值；
 *       展示读者基本信息，借书记录与是否冻结；借阅：借书人，书名，借书时间
*/
void user_manager::QueryUserInfo(string userPW){
    int key = get_hash(getMD5(userPW));
    int val = user_password_id.get(key);
    base_user *usr = node_usr.Find(val);//在 splay 树中查询

    cout << "姓名：" << usr->user_name << endl;
    cout << "院系：" << usr->user_dep <<endl;
    cout << "是否冻结：";
    if(usr->freeze_flag == 0) {
        cout << "否" << endl;
    }
    else cout << "是" << endl;

    for(vector<brorrow_item>::iterator it = usr->bro.begin(); it != usr->bro.end(); it++)
	{
		cout << "借书人：" << (*it).borer << endl;
		cout << "书名：" << (*it).script_name << endl;
		cout << "借书时间" << ctime(&(*it).bro_time) << endl;
	}
}

/*
 * 根据密码删除用户信息
 * 参数：string 型，需要被删除的用户的密码
 * 功能：无返回值；
 *       展示并删除指定用户
*/
void CancelUser(string userPW){
    int key = get_hash(getMD5(userPW));
    int val = user_password_id.get(key);
    base_user *usr = node_usr.Find(val);
    if(val == -1) {
        cout << "此用户不存在！" << endl;
        return;
    }

    cout << "姓名：" << usr->user_name;
    cout << "院系：" << usr->user_dep;
    user_password_id.modify(key, 0); //在哈希表中修改
    node_usr.remove(val); //在 splay 中删除
}
